<?php
/**
 * Application level Controller
 *
 * This file is application-wide controller file. You can put all
 * application-wide controller-related methods here.
 *
 * PHP 5
 *
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link          http://cakephp.org CakePHP(tm) Project
 * @package       app.Controller
 * @since         CakePHP(tm) v 0.2.9
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
 */

App::uses('Controller', 'Controller');

/**
 * Application Controller
 *
 * Add your application-wide methods in the class below, your controllers
 * will inherit them.
 *
 * @package		app.Controller
 * @link		http://book.cakephp.org/2.0/en/controllers.html#the-app-controller
 */
class AppController extends Controller {
	
	public $pageTitle = "";

	public function beforeFilter() {
	    // settings
	    $this->loadModel('Settings');
	    $this->settingsData = $this->Settings->find('list', array('fields'=>array('key', 'value')));
	    $this->set('settings', $this->settingsData);
	}
	
    public function beforeRender() {
        parent::beforeRender();
        
        // load Groups
        $this->loadModel('Group');
        $groups = $this->Group->find('list', array(
            'fields' => array('name', 'key'),
            'joins'  => array(
                array(
                    'table' => 'products',
                    'alias' => 'Product',
                    'type'  => 'INNER',
                    'conditions' => array('Product.group_id=Group.id')
                )
            )
        ));
        $this->set('groups', $groups);
        
        // load Menu Pages
        $this->loadModel('Page');
        $menuPages = $this->Page->find('list', array(
            'fields' => array('id', 'menu_label')
        ));
        $this->set('menuPages', $menuPages);
		
		// page title
		$title = $this->pageTitle;
		if ($title) {
			$title = "{$title} &middot; ";
		}
		$this->set('title_for_layout', $title);
    }
    
    public function setFlash($message, $class='error') {
        $this->Session->setFlash($message, 'flash', array( 'class' => $class ));
    }
    
    public function appError(Exception $error) {
        if ($error instanceof MissingControllerException) {
            $params = $this->params;
            
            if ($params['controller'] == 'img') {
                $path = $params->url;
                $get  = $_SERVER['REQUEST_URI'];
                $get  = substr($get, strpos($get, "?")+1);
                
                //die('img/imagick.php?f='.$path."&".$get);
                $this->redirect('/img/imagick.php?f='.$path."&".$get);
            } else {
            
                $groupKey  = $params['controller'];
                $productId = (int)$params['action'];
                
                $url = '/products';
                $request = new CakeRequest($url);
                
                // group Key
                $p = array( 'groupKey' => $groupKey );
                if ($productId > 0) {
                    $url = '/products/view';
                    $p['productId'] = $productId;
                }
                $request->addParams($p);
                
                // named Params
                if (! empty($this->params->named)) {
                    $request->addParams(array(
                        'named' => $this->params->named
                    ));
                }
                
                $Dispatcher = new Dispatcher();
                $Dispatcher->dispatch($request, new CakeResponse);
            }
            
            return;
        }
    }

}
